Zmena vlastnika IB, FB

Otázka od: Richard Kejval

11. 11. 2002 16:00


Ahoj,

potrebuji zmenit vlastnika databaze uz u existujici databaze, ktera je
uz dost obsahla a nechce se mi data prenaset do nove vytvorene.
Navrhl jsem proceduru, ktera se zda, ze vlastnika uspesne vymeni,
ale preci jen bych chtel slyset nazor nejakeho guru, nez to udelam
nad ostrymi daty. Co vy na to ?

CREATE PROCEDURE CHANGE_OWNER (
    OLD_OWNER VARCHAR(31),
    NEW_OWNER VARCHAR(31))
AS
declare variable RDB$USER CHAR(31) CHARACTER SET UNICODE_FSS;
declare variable RDB$PRIVILEGE CHAR(6) CHARACTER SET NONE;
declare variable RDB$GRANT_OPTION SMALLINT;
declare variable RDB$RELATION_NAME CHAR(31) CHARACTER SET UNICODE_FSS;
declare variable RDB$FIELD_NAME CHAR(31) CHARACTER SET UNICODE_FSS;
declare variable RDB$USER_TYPE SMALLINT;
declare variable RDB$OBJECT_TYPE SMALLINT;
begin
  For
  Select
  RDB$USER, RDB$PRIVILEGE, RDB$GRANT_OPTION, RDB$RELATION_NAME,
RDB$FIELD_NAME, RDB$USER_TYPE, RDB$OBJECT_TYPE
  from RDB$USER_PRIVILEGES
  where
    RDB$Grantor=:Old_Owner
  into
    :RDB$USER, :RDB$PRIVILEGE, :RDB$GRANT_OPTION, :RDB$RELATION_NAME,
:RDB$FIELD_NAME, :RDB$USER_TYPE, :RDB$OBJECT_TYPE do
  begin
    if (RDB$USER=Old_Owner) then
      RDB$USER=New_Owner;
    INSERT INTO RDB$USER_PRIVILEGES
    (RDB$USER, RDB$GRANTOR, RDB$PRIVILEGE, RDB$GRANT_OPTION,
RDB$RELATION_NAME, RDB$FIELD_NAME, RDB$USER_TYPE, RDB$OBJECT_TYPE)
    Values
    (:RDB$USER, :New_Owner, :RDB$PRIVILEGE, :RDB$GRANT_OPTION,
:RDB$RELATION_NAME, :RDB$FIELD_NAME, :RDB$USER_TYPE, :RDB$OBJECT_TYPE);
  end

  update rdb$procedures a
  set
    a.rdb$owner_name=:New_Owner
  where
    a.rdb$owner_name=:Old_Owner;

  update rdb$relations a
  set
    a.rdb$owner_name=:New_Owner
  where
    a.rdb$owner_name=:Old_Owner;

  update rdb$roles a
  set
    a.rdb$owner_name=:New_Owner
  where
    a.rdb$owner_name=:Old_Owner;

  delete from rdb$user_privileges a
  where
    a.rdb$grantor=:Old_Owner;
end

S pozdravem
ing. Richard Kejval
IC Software s.r.o
Mobil: +420602477679

Odpovedá: Pavel Cisar

12. 11. 2002 10:25

Haj hou!

Na prvni pohled to vypada vporadku. Ostatne netreba se ptat dopredu,
proste to zokousejte na kopii databaze (coz je stejne doporuceny postup).

S pozdravem
Pavel Cisar
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase

Odpovedá: Richard Kejval

12. 11. 2002 11:08


Ahoj,

To jsem samozrejme udelal, myslel jsem jen abych to neudelal na ostrych
datech a treba po mesici az budu chtit treba zalohovat (take jsem zkousel),
nebo udelat jinou akci (zmenu struktury atd...), kde budu muset byt jako
vlastnik DB, tak abych nezjistil, ze jsem v haji a cesta neni zpet.

A snad by se to mohlo i nekomu hodit, protoze uz se to tady resilo,
ale myslim, ze bez vysledku.

S pozdravem
ing. Richard Kejval
IC Software s.r.o
Mobil: +420602477679


> Haj hou!
>
> Na prvni pohled to vypada vporadku. Ostatne netreba se ptat dopredu,
> proste to zokousejte na kopii databaze (coz je stejne doporuceny postup).
>
> S pozdravem
> Pavel Cisar
> Mobil: 724 281429
> http://www.ibphoenix.cz
> Vse co potrebujete pro Firebird a InterBase
>
>